package com.zjj.lbw.algorithm.recursion;

import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;

/**
 * @author zhanglei.zjj
 * @description 递归的寻找某个父目录下面.txt结尾的文件
 * @date 2023/3/11 21:33
 */
public class SearchFileByRecursion {
    private static void listFile(File parentFile, List<File> resultList) {
        if (Objects.isNull(parentFile) || !parentFile.exists()) {
            return;
        }
        if (!parentFile.isDirectory()) {
            if (parentFile.getName().endsWith(".txt")) {
                resultList.add(parentFile);
            }
            return;
        }
        for (File file : parentFile.listFiles()) {
            listFile(file, resultList);
        }
    }

    public static void main(String[] args) {
        // 在idea中，参照物是项目的根路径，以项目的跟路径为参照物，相对路径从模块名开始
        File parentFile = new File("algorithm-stu/fileDir");
        ArrayList<File> fileList = new ArrayList<>();
        listFile(parentFile, fileList);

        fileList.stream().map(File::getName).forEach(System.out::println);
    }

}
